#ifndef GULLENGINE_OPENGLWRAPPER_H
#define GULLENGINE_OPENGLWRAPPER_H

#include "API3D.h"
#include "LightProperties.h"
#include <iostream>
#include <map>

namespace gull {
	namespace core {
		
		
		class OpenGLWrapper : public API3D {
		public:
			
			typedef std::map<int, bool> lights;
			typedef std::pair<int, bool> lightPair;
			
			static unsigned short MAX_OPENGL_LIGHT;
			
			virtual gullNotification init3DContext();
			virtual void refreshFrame() const;
			virtual void reshapeFrame(int w, int h) const;
			virtual void setMatrixWorld(const Matrix4x3& newMatrix) const;
			virtual void setCamera(const Matrix4x3& cam) const;
			virtual void drawTriangle(const Vector3D& a, const Vector3D& b, const Vector3D& c) const;
			virtual void drawTriangle(double edge) const;
			virtual void setLight(const LightNode& light) const;
			
			
		protected:
			lights m_lights;
			
		private:
		};
		
		
	}
}


#endif